package Queue;

/**
 * Created by sunwei on 2017/10/10
 * Time:10:18
 *
 * 这里用双端链表来实现链表的相关操作
 */
public class FirstLastLink {

    private Link first;//定义首节点
    private Link last;//定义尾节点

    /*
    构造函数
     */
    public FirstLastLink() {
        this.first = null;
        this.last = null;
    }

    /*
    判断双端链表是否为空
     */
    public boolean isEmpty(){
        return (first ==null);
    }

    /*
    从链表的末尾插入双端链表节点
     */
    public void insertLast(double dd){
        Link newLink = new Link(dd);//声明一个新的link节点
        if (isEmpty()) {//如果为空
              first = newLink;//直接将新的节点放到链表里面去
        }else {
            last.next = newLink;//如果链表不是空的，就将这个新的节点放到last后边
        }
        last = newLink;//然后将last移动到newLink节点处
    }

    /*
    删除首节点，从链表的首节点开始删除,返回被删除节点的值
     */
    public double deleteLink(){
        double temp = first.dData;
        if (first.next==null) {//如果只有一个元素
              last = null;
        }else {
            first = first.next;
        }
        return temp;
    }

    /*
    遍历显示链表
     */
    public void displayList(){
        Link current = first;//从首节点开始
        while (current.next!=null){//如果链表不为空
            current.displayLink();
            current = current.next;
        }
        System.out.println(" ");
    }
}
